package com.hhkj.admin.sale.common.utils;

import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.StrUtil;

/**
 * ApiSaleLevelUtils
 *
 * @author HHKJ-SERVER-ZJ
 * @since 2023/10/25 16:24
 */
public class SaleLevelUtils {

    /**
     * 获取 第一级的等级
     *
     * @return 等级标签
     */
    public static String getRootLevel() {
        return calculateNextLevel(null);
    }

    /**
     * 计算销售等级信息
     *
     * @param level 等级
     * @return 计算销售的等级
     */
    public static String calculateNextLevel(String level) {
        char startChar = 'A';
        if (StrUtil.isBlank(level) || !Validator.isWord(level)) {
            return String.valueOf(startChar);
        }
        level = level.toUpperCase();
        // 1、获取最后一位字母
        char[] charArray = level.toCharArray();
        int lastIndex = charArray.length - 1;
        char endChar = 'Z';
        boolean findFlag = false;

        // 2、从最后一位进行遍历计算等级序号前缀
        for (int index = lastIndex; index >= 0; index--) {
            if (charArray[index] != endChar) {
                charArray[index] = ++charArray[index];
                findFlag = true;
                break;
            } else {
                charArray[index] = startChar;
            }
        }

        // 3、如果出现ZZZZ情况最前面直接加A
        String result = new String(charArray);
        if (!findFlag) {
            result = startChar + result;
        }
        return result;
    }
}
